-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
password requirements #377
base: main
Are you sure you want to change the base?
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #377 +/- ##
==========================================
+ Coverage 82.87% 82.90% +0.02%
==========================================
Files 98 98
Lines 6185 6199 +14
==========================================
+ Hits 5126 5139 +13
- Misses 1059 1060 +1 ☔ View full report in Codecov by Sentry. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we add some unit tests?
9355e36
to
80c212b
Compare
app/utils/validators.py
Outdated
if len(password) < 6 or nb_number < 1 or nb_special < 1 or nb_min < 1 or nb_maj < 1: | ||
raise ValueError( | ||
"The password must be at least 6 characters long and contain at least one number, one special character, one majuscule and one minuscule.", | ||
) | ||
return password.strip() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As remarked by @Rotheem, you should use strip()
before the validation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
And more importantly, use RegEx please
app/utils/validators.py
Outdated
nb_number, nb_special, nb_maj, nb_min = 0, 0, 0, 0 | ||
for i in password: | ||
if i.isnumeric(): | ||
nb_number += 1 | ||
elif not i.isalpha(): | ||
nb_special += 1 | ||
elif i.isupper(): | ||
nb_maj += 1 | ||
elif i.islower(): | ||
nb_min += 1 | ||
|
||
if len(password) < 6 or nb_number < 1 or nb_special < 1 or nb_min < 1 or nb_maj < 1: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The use of RegEx make the code cleaner.
nb_number, nb_special, nb_maj, nb_min = 0, 0, 0, 0 | |
for i in password: | |
if i.isnumeric(): | |
nb_number += 1 | |
elif not i.isalpha(): | |
nb_special += 1 | |
elif i.isupper(): | |
nb_maj += 1 | |
elif i.islower(): | |
nb_min += 1 | |
if len(password) < 6 or nb_number < 1 or nb_special < 1 or nb_min < 1 or nb_maj < 1: | |
if len(password) < 6 or not (re.search(r'[a-z]',password) and re.search(r'[A-Z]',password) and re.search(r'[0-9]',password) and re.search(r'[!@#$%^&*(),.?":{}|<>]-_',password)): |
ce73e26
to
4efa93c
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should use the same algorithm as Calypsso
|
GitGuardian id | GitGuardian status | Secret | Commit | Filename | |
---|---|---|---|---|---|
13092605 | Triggered | Generic Password | 87ad009 | tests/test_users.py | View secret |
13092606 | Triggered | Generic Password | 87ad009 | tests/test_users.py | View secret |
13092607 | Triggered | Generic Password | 87ad009 | tests/test_users.py | View secret |
🛠 Guidelines to remediate hardcoded secrets
- Understand the implications of revoking this secret by investigating where it is used in your code.
- Replace and store your secrets safely. Learn here the best practices.
- Revoke and rotate these secrets.
- If possible, rewrite git history. Rewriting git history is not a trivial act. You might completely break other contributing developers' workflow and you risk accidentally deleting legitimate data.
To avoid such incidents in the future consider
- following these best practices for managing and storing secrets including API keys and other credentials
- install secret detection on pre-commit to catch secret before it leaves your machine and ease remediation.
🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.
Bumps [psycopg[binary]](https://github.com/psycopg/psycopg) from 3.1.19 to 3.2.1. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/psycopg/psycopg/blob/master/docs/news.rst">psycopg[binary]'s changelog</a>.</em></p> <blockquote> <p>.. currentmodule:: psycopg</p> <p>.. index:: single: Release notes single: News</p> <h1><code>psycopg</code> release notes</h1> <h2>Future releases</h2> <p>Psycopg 3.2.2 (unreleased) ^^^^^^^^^^^^^^^^^^^^^^^^^^</p> <ul> <li>Drop <code>!TypeDef</code> specifications as string from public modules, as they cannot be composed by users as <code>!typing</code> objects previously could (:ticket:<code>[#860](https://github.com/psycopg/psycopg/issues/860)</code>).</li> </ul> <h2>Current release</h2> <p>Psycopg 3.2.1 ^^^^^^^^^^^^^</p> <ul> <li>Fix packaging metadata breaking <code>[c]</code>, <code>[binary]</code> dependencies (:ticket:<code>[#853](https://github.com/psycopg/psycopg/issues/853)</code>).</li> </ul> <h2>Psycopg 3.2</h2> <p>.. rubric:: New top-level features</p> <ul> <li>Add support for integer, floating point, boolean <code>NumPy scalar types</code>__ (:ticket:<code>[#332](https://github.com/psycopg/psycopg/issues/332)</code>).</li> <li>Add <code>!timeout</code> and <code>!stop_after</code> parameters to <code>Connection.notifies()</code> (:ticket:<code>340</code>).</li> <li>Allow dumpers to return <code>!None</code>, to be converted to NULL (:ticket:<code>[#377](https://github.com/psycopg/psycopg/issues/377)</code>).</li> <li>Add :ref:<code>raw-query-cursors</code> to execute queries using placeholders in PostgreSQL format (<code>$1</code>, <code>$2</code>...) (🎟️<code>[#560](psycopg/psycopg#560), [#839](https://github.com/psycopg/psycopg/issues/839)</code>).</li> <li>Add <code>capabilities</code> object to :ref:<code>inspect the libpq capabilities <capabilities></code> (🎫<code>[#772](https://github.com/psycopg/psycopg/issues/772)</code>).</li> <li>Add <code>~rows.scalar_row</code> to return scalar values from a query (:ticket:<code>[#723](https://github.com/psycopg/psycopg/issues/723)</code>).</li> <li>Add <code>~Connection.cancel_safe()</code> for encrypted and non-blocking cancellation when using libpq v17. Use such method internally to implement <code>!KeyboardInterrupt</code> and <code>~cursor.copy</code> termination (:ticket:<code>[#754](https://github.com/psycopg/psycopg/issues/754)</code>).</li> <li>The <code>!context</code> parameter of <code>sql</code> objects <code>~sql.Composable.as_string()</code> and <code>~sql.Composable.as_bytes()</code> methods is now optional (:ticket:<code>[#716](https://github.com/psycopg/psycopg/issues/716)</code>).</li> <li>Add <code>~Connection.set_autocommit()</code> on sync connections, and similar</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/psycopg/psycopg/commit/bb47d3944d1c65d9baf83808696aba1b2dfed9af"><code>bb47d39</code></a> chore: bump psycopg package version to 3.2.1</li> <li><a href="https://github.com/psycopg/psycopg/commit/55490a2d6b8344e3b49f6004c8e7afdc6d40c5fb"><code>55490a2</code></a> fix: fix versions in packaging metadata</li> <li><a href="https://github.com/psycopg/psycopg/commit/1cbc42a6759823e18d273e739cc64d7f994f53b2"><code>1cbc42a</code></a> docs: fix title level of major releases</li> <li><a href="https://github.com/psycopg/psycopg/commit/06a6e5e213577fca0fa1c6ca62def8fa5803663a"><code>06a6e5e</code></a> docs: mention dropping Python 3.7 in psycopg 3.2 release</li> <li><a href="https://github.com/psycopg/psycopg/commit/ea3735dccc5dfd20eb4ba5c4a3c52ec76d9aa6d0"><code>ea3735d</code></a> docs: better organization of the 3.2 release notes</li> <li><a href="https://github.com/psycopg/psycopg/commit/896eee2363d0bc25cc31ccf4189b295bb61deb40"><code>896eee2</code></a> chore: bump psycopg package version to 3.2.0</li> <li><a href="https://github.com/psycopg/psycopg/commit/2e2f4d7dd31cac67b790c293de70133373173ebb"><code>2e2f4d7</code></a> chore: bump psycopg package version to 3.1.20</li> <li><a href="https://github.com/psycopg/psycopg/commit/7369d3bb0280851832a395d6b3084de7b520e3a0"><code>7369d3b</code></a> Merge pull request <a href="https://github.com/psycopg/psycopg/issues/846">#846</a> from eli-schwartz/tomllib</li> <li><a href="https://github.com/psycopg/psycopg/commit/6672c708f1813978461aff6e5e240a96773ff873"><code>6672c70</code></a> style: shorter line in pyproject.toml</li> <li><a href="https://github.com/psycopg/psycopg/commit/a517bb4579d2b8caa4ddc1e81294d6026c8974d6"><code>a517bb4</code></a> build: avoid installing tomli on recent python</li> <li>Additional commits viewable in <a href="https://github.com/psycopg/psycopg/compare/3.1.19...3.2.1">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=psycopg[binary]&package-manager=pip&previous-version=3.1.19&new-version=3.2.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Description
update our password validators to unsure new users' password are strong enough.
We need to coordinate this with Titan.
Fix: #330